// 验证工具函数

/**
 * 验证计划标题
 */
export const validatePlanTitle = (title) => {
  if (!title || typeof title !== 'string') {
    return { valid: false, message: '计划标题不能为空' };
  }
  
  const trimmedTitle = title.trim();
  if (trimmedTitle.length === 0) {
    return { valid: false, message: '计划标题不能为空' };
  }
  
  if (trimmedTitle.length > 100) {
    return { valid: false, message: '计划标题不能超过100个字符' };
  }
  
  return { valid: true };
};

/**
 * 验证日期格式
 */
export const validateDate = (dateString) => {
  if (!dateString) {
    return { valid: false, message: '日期不能为空' };
  }
  
  const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
  if (!dateRegex.test(dateString)) {
    return { valid: false, message: '日期格式不正确，应为 YYYY-MM-DD' };
  }
  
  const date = new Date(dateString);
  if (isNaN(date.getTime())) {
    return { valid: false, message: '无效的日期' };
  }
  
  return { valid: true };
};

/**
 * 验证时间格式 (HH:mm)
 */
export const validateTime = (timeString) => {
  if (!timeString) {
    return { valid: false, message: '时间不能为空' };
  }
  
  const timeRegex = /^([01]\d|2[0-3]):([0-5]\d)$/;
  if (!timeRegex.test(timeString)) {
    return { valid: false, message: '时间格式不正确，应为 HH:mm' };
  }
  
  return { valid: true };
};

/**
 * 验证优先级
 */
export const validatePriority = (priority) => {
  const validPriorities = ['low', 'medium', 'high'];
  if (priority && !validPriorities.includes(priority)) {
    return { valid: false, message: '优先级值无效' };
  }
  
  return { valid: true };
};

/**
 * 验证计划类型
 */
export const validatePlanType = (type) => {
  const validTypes = ['daily', 'weekly', 'monthly', 'yearly'];
  if (!validTypes.includes(type)) {
    return { valid: false, message: '计划类型无效' };
  }
  
  return { valid: true };
};

/**
 * 验证预计耗时（分钟）
 */
export const validateEstimatedTime = (time) => {
  if (time === undefined || time === null) {
    return { valid: true }; // 可选字段
  }
  
  if (typeof time !== 'number' || time < 0) {
    return { valid: false, message: '预计耗时必须是非负数' };
  }
  
  if (time > 1440) { // 24小时 = 1440分钟
    return { valid: false, message: '预计耗时不能超过24小时' };
  }
  
  return { valid: true };
};

